System virtualization creates multiple virtual systems from a single physical system. The physical system can be a stand-alone computer, or alternatively, a computing system utilizing clustered computers and components. Virtual systems are independent operating environments that use virtual resources made up of logical divisions of physical resources such as processors, memory and input/output (I/O) adapters. System virtualization is typically implemented through hypervisor technology. Hypervisors, also called virtual machine managers, use a thin layer of code in software or firmware to achieve fine-grained, dynamic resource sharing.
The hypervisor provides the ability to divide physical system resources into isolated logical partitions (also referred to as LPARs). Each LPAR operates like an independent system running its own operating environment (i.e., a virtual system). The hypervisor can allocate dedicated processors, I/O adapters, and memory to each LPAR. The hypervisor can also allocate shared processors to each LPAR. More specifically, the hypervisor creates virtual processors from physical processors, so that LPARs can share the physical processors while running independent operating environments.
Although each LPAR acts as an independent server, the LPARs on a physical server can share resources with each other. The hypervisor's ability to share resources among many LPARs allows increased resource utilization by shifting the server resources to where they are needed.
A processor is a device that executes programmable instructions. A processor core consists of components for execution of programmable instructions: floating point unit, fixed point unit, branch unit, load/store unit, internal caches, associated pipeline, General Purpose Registers (GPRs), Special Purpose Registers (SPRs) and Floating Point Registers (FPRs). In modern day superscalar processors, to increase the utilization of execution units, and hence throughput of work done by processor, the execution units are shared among multiple hardware threads in a time-shared manner, such that to the executing software it appears as if the processor is dedicated to itself. To achieve that, certain essential processor resources like GPRs, FPRs, SPRs are duplicated to create a notion of “hardware thread”, sometimes referred to as a “Central Processing Unit (CPU) thread.” In a sense, an LPAR consists of multiple software processes, in which a software process consists of multiple software threads, in which each software thread can execute on a hardware thread.
The more processors assigned to an LPAR, the greater the number of concurrent operations the LPAR can run at any given time. Dedicated processors are physical processors that are assigned to a single partition. Conversely, shared processors are physical processors whose processing capacity is shared among multiple LPARs.
Simultaneous multithreading is the ability of a single physical processor to simultaneously dispatch instructions from more than one hardware thread. Because there are two or more hardware threads per physical processor, additional instructions can run at the same time.
Context switching is this process of swapping one program out of the Central Processing Unit (CPU) and replacing it with another process's instructions. Context switching is how the computer's operating system multitasks different programs. Using context switching, one program executes for a while and then saves a copy of the program's execution state (such as register values), restores the execution state of the next program to execute on the processor. A context switch can be referred to as a “register context switch,” or a “frame switch,” or a “thread context switch.”